<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>SystemSharp: SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">SystemSharp
   &#160;<span id="projectnumber">0.3</span>
   </div>
   <div id="projectbrief">A system-level modeling framework for designing real-time embedded systems</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Packages</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Properties</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Events</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#properties">Properties</a> &#124;
<a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt; Class Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>This data structure represents a control-flow graph  
 <a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.png" usemap="#SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;_map" alt=""/>
  <map id="SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;_map" name="SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;_map">
<area href="class_system_sharp_1_1_analysis_1_1_method_code.html" title="A control-flow graph specialization for CLI methods " alt="SystemSharp.Analysis.MethodCode" shape="rect" coords="0,56,279,80"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0020d8ad2c74d005197c90f5fe700a14"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a0020d8ad2c74d005197c90f5fe700a14">ControlFlowGraph</a> (IEnumerable&lt; Ti &gt; instructions, Ti marshal, IInstructionInfo&lt; Ti &gt; iinfo, int entryPoint=0, ISet&lt; int &gt; exitPoints=null)</td></tr>
<tr class="memdesc:a0020d8ad2c74d005197c90f5fe700a14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a new instance based on an instruction sequence  <a href="#a0020d8ad2c74d005197c90f5fe700a14">More...</a><br/></td></tr>
<tr class="separator:a0020d8ad2c74d005197c90f5fe700a14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a259683dc2ea7d3b84d09b0f7cdcea50f"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a259683dc2ea7d3b84d09b0f7cdcea50f">IsLocalPinned</a> (int local)</td></tr>
<tr class="memdesc:a259683dc2ea7d3b84d09b0f7cdcea50f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tells whether a local variable is pinned, see <a href="http://msdn.microsoft.com/en-us/library/f58wzh21%28v=vs.110%29.aspx">http://msdn.microsoft.com/en-us/library/f58wzh21%28v=vs.110%29.aspx</a>  <a href="#a259683dc2ea7d3b84d09b0f7cdcea50f">More...</a><br/></td></tr>
<tr class="separator:a259683dc2ea7d3b84d09b0f7cdcea50f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af63cace6d5aaf14d33002169490d1f51"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#af63cace6d5aaf14d33002169490d1f51">IsBranch</a> (int index)</td></tr>
<tr class="separator:af63cace6d5aaf14d33002169490d1f51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0f66e1d0dd6b8c1445c690f38662a04"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa0f66e1d0dd6b8c1445c690f38662a04">IsBranchTarget</a> (int index)</td></tr>
<tr class="separator:aa0f66e1d0dd6b8c1445c690f38662a04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6dc8f7463e58f11e8ac6849e50f1acd"><td class="memItemLeft" align="right" valign="top">Ti[]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ac6dc8f7463e58f11e8ac6849e50f1acd">GetSuccessors</a> (int index)</td></tr>
<tr class="memdesc:ac6dc8f7463e58f11e8ac6849e50f1acd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given an instruction index, returns all possible successor instructions  <a href="#ac6dc8f7463e58f11e8ac6849e50f1acd">More...</a><br/></td></tr>
<tr class="separator:ac6dc8f7463e58f11e8ac6849e50f1acd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2dc7fac06bd1ad1fa8ea76cd94e4095a"><td class="memItemLeft" align="right" valign="top">Ti[]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a2dc7fac06bd1ad1fa8ea76cd94e4095a">GetSuccessorsOf</a> (Ti ili)</td></tr>
<tr class="memdesc:a2dc7fac06bd1ad1fa8ea76cd94e4095a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given an instruction, returns all possible successor instructions  <a href="#a2dc7fac06bd1ad1fa8ea76cd94e4095a">More...</a><br/></td></tr>
<tr class="separator:a2dc7fac06bd1ad1fa8ea76cd94e4095a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05c9f79b103980e69809b9529e711525"><td class="memItemLeft" align="right" valign="top">Ti[]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a05c9f79b103980e69809b9529e711525">GetPredecessors</a> (int index)</td></tr>
<tr class="memdesc:a05c9f79b103980e69809b9529e711525"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given an instruction index, returns all possible predecessor instructions  <a href="#a05c9f79b103980e69809b9529e711525">More...</a><br/></td></tr>
<tr class="separator:a05c9f79b103980e69809b9529e711525"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3e44c9f0c164a0936c8af1c47e52130"><td class="memItemLeft" align="right" valign="top">Ti[]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ac3e44c9f0c164a0936c8af1c47e52130">GetPredecessorsOf</a> (Ti ili)</td></tr>
<tr class="memdesc:ac3e44c9f0c164a0936c8af1c47e52130"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given an instruction, returns all possible predecessor instructions  <a href="#ac3e44c9f0c164a0936c8af1c47e52130">More...</a><br/></td></tr>
<tr class="separator:ac3e44c9f0c164a0936c8af1c47e52130"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad53cd4f85a326f93a65facd93644333a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ad53cd4f85a326f93a65facd93644333a">GetIDomIndex</a> (int index)</td></tr>
<tr class="memdesc:ad53cd4f85a326f93a65facd93644333a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given an instruction index, returns the index of its immediate dominator  <a href="#ad53cd4f85a326f93a65facd93644333a">More...</a><br/></td></tr>
<tr class="separator:ad53cd4f85a326f93a65facd93644333a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8bbf4a61340fff1ff5b7388a3bfa846"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ab8bbf4a61340fff1ff5b7388a3bfa846">GetPostOrderIndex</a> (int index)</td></tr>
<tr class="memdesc:ab8bbf4a61340fff1ff5b7388a3bfa846"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given an instruction index, returns its associated post-order index  <a href="#ab8bbf4a61340fff1ff5b7388a3bfa846">More...</a><br/></td></tr>
<tr class="separator:ab8bbf4a61340fff1ff5b7388a3bfa846"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d54a4394119c32cd709e713f9576916"><td class="memItemLeft" align="right" valign="top">IEnumerable&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a9d54a4394119c32cd709e713f9576916">GetLCASet</a> (IEnumerable&lt; int &gt; query)</td></tr>
<tr class="memdesc:a9d54a4394119c32cd709e713f9576916"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given a set of instruction indices, returns the set of their lowest common ancestors.  <a href="#a9d54a4394119c32cd709e713f9576916">More...</a><br/></td></tr>
<tr class="separator:a9d54a4394119c32cd709e713f9576916"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefe2bdb6703327dc54e53fd13c829d76"><td class="memItemLeft" align="right" valign="top">BasicBlock&lt; Ti &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aefe2bdb6703327dc54e53fd13c829d76">GetBasicBlockStartingAt</a> (int index)</td></tr>
<tr class="memdesc:aefe2bdb6703327dc54e53fd13c829d76"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the basic block which begins at the supplied instruction index  <a href="#aefe2bdb6703327dc54e53fd13c829d76">More...</a><br/></td></tr>
<tr class="separator:aefe2bdb6703327dc54e53fd13c829d76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5d3e71c9bc2640da4bb8455a58087c3"><td class="memItemLeft" align="right" valign="top">BasicBlock&lt; Ti &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa5d3e71c9bc2640da4bb8455a58087c3">GetBasicBlockContaining</a> (int index)</td></tr>
<tr class="memdesc:aa5d3e71c9bc2640da4bb8455a58087c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the basic block which contains a given instruction  <a href="#aa5d3e71c9bc2640da4bb8455a58087c3">More...</a><br/></td></tr>
<tr class="separator:aa5d3e71c9bc2640da4bb8455a58087c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba67ead1a91741bf383422822f7af5b7"><td class="memItemLeft" align="right" valign="top">override string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aba67ead1a91741bf383422822f7af5b7">ToString</a> ()</td></tr>
<tr class="separator:aba67ead1a91741bf383422822f7af5b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a6b5956c06a8a298304286a8005db00b0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a6b5956c06a8a298304286a8005db00b0">ComputePredecessors</a> ()</td></tr>
<tr class="separator:a6b5956c06a8a298304286a8005db00b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02fbac5e52aeca7c53b979a3b464d8d8"><td class="memItemLeft" align="right" valign="top">virtual BasicBlock&lt; Ti &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a02fbac5e52aeca7c53b979a3b464d8d8">CreateBasicBlock</a> (int startIndex, int lastIndex)</td></tr>
<tr class="memdesc:a02fbac5e52aeca7c53b979a3b464d8d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a basic block for a range of instructions. Override this if you want to create a specialized basic block implementation.  <a href="#a02fbac5e52aeca7c53b979a3b464d8d8">More...</a><br/></td></tr>
<tr class="separator:a02fbac5e52aeca7c53b979a3b464d8d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a148c06fbb5564cdc5e36cf3ead7167ce"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a148c06fbb5564cdc5e36cf3ead7167ce">AnalyzeLoops</a> ()</td></tr>
<tr class="memdesc:a148c06fbb5564cdc5e36cf3ead7167ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Analyzes the loop nesting structure of the control-flow graph. The default implementation directs the tasks to Havlak's algorithm.  <a href="#a148c06fbb5564cdc5e36cf3ead7167ce">More...</a><br/></td></tr>
<tr class="separator:a148c06fbb5564cdc5e36cf3ead7167ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af90c76096917b1aca642d97928562ab2"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#af90c76096917b1aca642d97928562ab2">ComputeDominators</a> ()</td></tr>
<tr class="memdesc:af90c76096917b1aca642d97928562ab2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the immediate dominator of each basic block. The default implementation directs the task to the Cooper-Harvey-Kennedy algorithm.  <a href="#af90c76096917b1aca642d97928562ab2">More...</a><br/></td></tr>
<tr class="separator:af90c76096917b1aca642d97928562ab2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1421a284f4027dfed381b80ad9eac8fb"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a1421a284f4027dfed381b80ad9eac8fb">ComputeBasicBlocks</a> ()</td></tr>
<tr class="memdesc:a1421a284f4027dfed381b80ad9eac8fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs basic blocks from the instruction sequence.  <a href="#a1421a284f4027dfed381b80ad9eac8fb">More...</a><br/></td></tr>
<tr class="separator:a1421a284f4027dfed381b80ad9eac8fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ff8154ddac48a7c4aa7086b988a46b4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a2ff8154ddac48a7c4aa7086b988a46b4">Setup</a> ()</td></tr>
<tr class="memdesc:a2ff8154ddac48a7c4aa7086b988a46b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs all essential data structures. The default implementation computes basic blocks, loop nesting structure and immediate dominators. Override if you need to compute more.  <a href="#a2ff8154ddac48a7c4aa7086b988a46b4">More...</a><br/></td></tr>
<tr class="separator:a2ff8154ddac48a7c4aa7086b988a46b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="properties"></a>
Properties</h2></td></tr>
<tr class="memitem:a80c2c7dfe11694ac7f2febc8b13bbb65"><td class="memItemLeft" align="right" valign="top">IInstructionInfo&lt; Ti &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a80c2c7dfe11694ac7f2febc8b13bbb65">InstructionInfo</a><code> [get, set]</code></td></tr>
<tr class="memdesc:a80c2c7dfe11694ac7f2febc8b13bbb65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Instruction information service  <a href="#a80c2c7dfe11694ac7f2febc8b13bbb65">More...</a><br/></td></tr>
<tr class="separator:a80c2c7dfe11694ac7f2febc8b13bbb65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0c5a4fc92d5f9ee838b2d5ac0b258f0"><td class="memItemLeft" align="right" valign="top">List&lt; Ti &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa0c5a4fc92d5f9ee838b2d5ac0b258f0">Instructions</a><code> [get, set]</code></td></tr>
<tr class="memdesc:aa0c5a4fc92d5f9ee838b2d5ac0b258f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Instruction sequence  <a href="#aa0c5a4fc92d5f9ee838b2d5ac0b258f0">More...</a><br/></td></tr>
<tr class="separator:aa0c5a4fc92d5f9ee838b2d5ac0b258f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5c2602bc2ba7e9d47ecb920770e65d9"><td class="memItemLeft" align="right" valign="top">BasicBlock&lt; Ti &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#af5c2602bc2ba7e9d47ecb920770e65d9">EntryCB</a><code> [get, set]</code></td></tr>
<tr class="memdesc:af5c2602bc2ba7e9d47ecb920770e65d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Entry point  <a href="#af5c2602bc2ba7e9d47ecb920770e65d9">More...</a><br/></td></tr>
<tr class="separator:af5c2602bc2ba7e9d47ecb920770e65d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a870910afc6340485e06e797a3a11c518"><td class="memItemLeft" align="right" valign="top">BasicBlock&lt; Ti &gt;[]&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a870910afc6340485e06e797a3a11c518">BasicBlocks</a><code> [get, set]</code></td></tr>
<tr class="memdesc:a870910afc6340485e06e797a3a11c518"><td class="mdescLeft">&#160;</td><td class="mdescRight">All basic blocks  <a href="#a870910afc6340485e06e797a3a11c518">More...</a><br/></td></tr>
<tr class="separator:a870910afc6340485e06e797a3a11c518"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2956ca81392bf7caaba12e446ff5728"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa2956ca81392bf7caaba12e446ff5728">MaxBBSize</a><code> [get]</code></td></tr>
<tr class="memdesc:aa2956ca81392bf7caaba12e446ff5728"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of instructions inside the largest basic block  <a href="#aa2956ca81392bf7caaba12e446ff5728">More...</a><br/></td></tr>
<tr class="separator:aa2956ca81392bf7caaba12e446ff5728"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This data structure represents a control-flow graph </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Ti</td><td>Type of instructions being represented</td></tr>
  </table>
  </dd>
</dl>
<div class="typeconstraint">
<dl><dt><b>Type Constraints</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em>Ti</em></td><td>&#160;:</td><td valign="top"><em><a class="el" href="interface_system_sharp_1_1_analysis_1_1_i_instruction.html">IInstruction</a></em></td><td>&#160;</td></tr>
</table>
</dl>
</div>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00308">308</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a0020d8ad2c74d005197c90f5fe700a14"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.ControlFlowGraph </td>
          <td>(</td>
          <td class="paramtype">IEnumerable&lt; Ti &gt;&#160;</td>
          <td class="paramname"><em>instructions</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Ti&#160;</td>
          <td class="paramname"><em>marshal</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">IInstructionInfo&lt; Ti &gt;&#160;</td>
          <td class="paramname"><em>iinfo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>entryPoint</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ISet&lt; int &gt;&#160;</td>
          <td class="paramname"><em>exitPoints</em> = <code>null</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructs a new instance based on an instruction sequence </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">instructions</td><td>instruction sequence</td></tr>
    <tr><td class="paramname">marshal</td><td>the instruction which should be treated as exit point</td></tr>
    <tr><td class="paramname">iinfo</td><td>instruction information service</td></tr>
    <tr><td class="paramname">entryPoint</td><td>optional entry point for graph construction (as instruction index)</td></tr>
    <tr><td class="paramname">exitPoints</td><td>optional set of additional exit points (as instruction indices)</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00356">356</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a148c06fbb5564cdc5e36cf3ead7167ce"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.AnalyzeLoops </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Analyzes the loop nesting structure of the control-flow graph. The default implementation directs the tasks to Havlak's algorithm. </p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00723">723</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a1421a284f4027dfed381b80ad9eac8fb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.ComputeBasicBlocks </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructs basic blocks from the instruction sequence. </p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00745">745</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="af90c76096917b1aca642d97928562ab2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.ComputeDominators </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Computes the immediate dominator of each basic block. The default implementation directs the task to the Cooper-Harvey-Kennedy algorithm. </p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00735">735</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a6b5956c06a8a298304286a8005db00b0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.ComputePredecessors </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00503">503</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a02fbac5e52aeca7c53b979a3b464d8d8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual BasicBlock&lt;Ti&gt; SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.CreateBasicBlock </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>startIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>lastIndex</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates a basic block for a range of instructions. Override this if you want to create a specialized basic block implementation. </p>
<p>This method does not check whether the given instruction range formally meets the criterion of a basic block, e.g. having no conditional branches except for the last instruction. It is up to the caller to supply valid arguments. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">startIndex</td><td>index of first instruction inside the basic block</td></tr>
    <tr><td class="paramname">lastIndex</td><td>index of last instruction inside the basic block</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a basic block for the specified instruction range</dd></dl>

<p>Reimplemented in <a class="el" href="class_system_sharp_1_1_analysis_1_1_method_code.html#ae8b8ed1024c8822401984c02dc0e8d32">SystemSharp.Analysis.MethodCode</a>.</p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00668">668</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="aa5d3e71c9bc2640da4bb8455a58087c3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BasicBlock&lt;Ti&gt; SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetBasicBlockContaining </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the basic block which contains a given instruction </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">index</td><td>instruction index</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>basic block which contains an instruction having the supplied index</dd></dl>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00653">653</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="aefe2bdb6703327dc54e53fd13c829d76"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BasicBlock&lt;Ti&gt; SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetBasicBlockStartingAt </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the basic block which begins at the supplied instruction index </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">index</td><td>instruction index</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the basic block which begins at the supplied instruction index</dd></dl>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00643">643</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="ad53cd4f85a326f93a65facd93644333a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetIDomIndex </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Given an instruction index, returns the index of its immediate dominator </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ili</td><td>instruction index</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>immediate dominator index</dd></dl>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00569">569</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a9d54a4394119c32cd709e713f9576916"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">IEnumerable&lt;int&gt; SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetLCASet </td>
          <td>(</td>
          <td class="paramtype">IEnumerable&lt; int &gt;&#160;</td>
          <td class="paramname"><em>query</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Given a set of instruction indices, returns the set of their lowest common ancestors. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">query</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00621">621</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="ab8bbf4a61340fff1ff5b7388a3bfa846"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetPostOrderIndex </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Given an instruction index, returns its associated post-order index </p>
<p>The post order index is the index assigned to a graph node during post-order traversal. See <a href="http://en.wikipedia.org/wiki/Tree_traversal">http://en.wikipedia.org/wiki/Tree_traversal</a> </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">index</td><td>instruction index</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>its post-order index</dd></dl>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00610">610</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a05c9f79b103980e69809b9529e711525"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Ti [] SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetPredecessors </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Given an instruction index, returns all possible predecessor instructions </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">index</td><td>instruction index</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>all possible predecessor instruction</dd></dl>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00549">549</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="ac3e44c9f0c164a0936c8af1c47e52130"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Ti [] SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetPredecessorsOf </td>
          <td>(</td>
          <td class="paramtype">Ti&#160;</td>
          <td class="paramname"><em>ili</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Given an instruction, returns all possible predecessor instructions </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ili</td><td>an instruction</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>all possible predecessor instructions</dd></dl>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00559">559</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="ac6dc8f7463e58f11e8ac6849e50f1acd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Ti [] SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetSuccessors </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Given an instruction index, returns all possible successor instructions </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">index</td><td>instruction index</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>all possible successor instruction</dd></dl>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00529">529</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a2dc7fac06bd1ad1fa8ea76cd94e4095a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Ti [] SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetSuccessorsOf </td>
          <td>(</td>
          <td class="paramtype">Ti&#160;</td>
          <td class="paramname"><em>ili</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Given an instruction, returns all possible successor instructions </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ili</td><td>an instruction</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>all possible successor instructions</dd></dl>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00539">539</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="af63cace6d5aaf14d33002169490d1f51"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.IsBranch </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00396">396</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="aa0f66e1d0dd6b8c1445c690f38662a04"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.IsBranchTarget </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00412">412</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a259683dc2ea7d3b84d09b0f7cdcea50f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.IsLocalPinned </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>local</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Tells whether a local variable is pinned, see <a href="http://msdn.microsoft.com/en-us/library/f58wzh21%28v=vs.110%29.aspx">http://msdn.microsoft.com/en-us/library/f58wzh21%28v=vs.110%29.aspx</a> </p>
<p>Default implementation returns always false. Override method to implement desired behavior. This feature was never tested in reality and probably should be removed in future releases, since pinned variables are only needed in unsafe code, and unsafe code is a very bad idea for hardware modeling anyway. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">local</td><td>index of local variable</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>whether variable is pinned</dd></dl>

<p>Reimplemented in <a class="el" href="class_system_sharp_1_1_analysis_1_1_method_code.html#a89ff498472eeed63e9dc5fedc3a1bfa9">SystemSharp.Analysis.MethodCode</a>.</p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00383">383</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a2ff8154ddac48a7c4aa7086b988a46b4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.Setup </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructs all essential data structures. The default implementation computes basic blocks, loop nesting structure and immediate dominators. Override if you need to compute more. </p>

<p>Reimplemented in <a class="el" href="class_system_sharp_1_1_analysis_1_1_method_code.html#af421cb060edd2e56315e0d8e841eee4c">SystemSharp.Analysis.MethodCode</a>.</p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00759">759</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="aba67ead1a91741bf383422822f7af5b7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">override string SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.ToString </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00766">766</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<h2 class="groupheader">Property Documentation</h2>
<a class="anchor" id="a870910afc6340485e06e797a3a11c518"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">BasicBlock&lt;Ti&gt; [] SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.BasicBlocks</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>All basic blocks </p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00346">346</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="af5c2602bc2ba7e9d47ecb920770e65d9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">BasicBlock&lt;Ti&gt; SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.EntryCB</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Entry point </p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00341">341</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a80c2c7dfe11694ac7f2febc8b13bbb65"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">IInstructionInfo&lt;Ti&gt; SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.InstructionInfo</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Instruction information service </p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00331">331</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="aa0c5a4fc92d5f9ee838b2d5ac0b258f0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">List&lt;Ti&gt; SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.Instructions</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Instruction sequence </p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00336">336</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<a class="anchor" id="aa2956ca81392bf7caaba12e446ff5728"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.MaxBBSize</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">get</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns the number of instructions inside the largest basic block </p>

<p>Definition at line <a class="el" href="_controlflow_analysis_8cs_source.html#l00592">592</a> of file <a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_controlflow_analysis_8cs_source.html">ControlflowAnalysis.cs</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespace_system_sharp.html">SystemSharp</a></li><li class="navelem"><a class="el" href="namespace_system_sharp_1_1_analysis.html">Analysis</a></li><li class="navelem"><a class="el" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html">ControlFlowGraph< Ti ></a></li>
    <li class="footer">Generated on Thu Dec 26 2013 14:21:51 for SystemSharp by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
  </ul>
</div>
</body>
</html>
